package 数组;

import java.util.Random;
import java.util.stream.IntStream;

/**
 * 方案一：找出所有全排列，然后标记ID，之后随机选择一个ID即可
 * 方案二：先确定第一个位置元素，再从剩余n-1中随机选出一个作为第二个位置元素...类推
 */

public class ShuffleArray {
    int[] nums;
    int n;
    Random random=new Random();
    public ShuffleArray(int[] _nums) {
        nums=_nums;
        n=nums.length;
    }

    public int[] reset() {
        return nums;
    }

    public int[] shuffle() {
        int[] ans = nums.clone();
        for (int i = 0; i < n; i++) {
            swap(ans, i, i + random.nextInt(n - i));
        }
        return ans;
    }

    void swap(int[] arr, int i, int j) {
        int c = arr[i];
        arr[i] = arr[j];
        arr[j] = c;
    }



}
